public partial class TargetSkill : BaseSkill
{
    static VFXManager VFXManager => GameManager.Instance.LevelManager.VFXManager;
    public override async void Cast(SkillEventEntity e = null)
    {
        base.Cast(e);
        if (e.Skill.SkillData.ContainsKey("AddPercentHp"))
        {
            var p = e.Skill.SkillData["AddPercentHp"].As<int>();
            var amount = (int)(e.Target.Entity.TotalHealth * p * 0.01f);
            e.Target.TakeHeal(amount);
            VFXManager.VFXWeaponRepair(e.Target.Position, amount);
            await ToSignal(VFXManager, nameof(VFXManager.OnVFXEnd));
        }

        // 单体buff TODO
        // if (e.Skill.BuffsConfig.Count > 0)
        // {
        //     foreach (var buff in e.Skill.BuffsConfig)
        //     {

        //     }
        // }
        EmitSignal(SignalName.OnCastStart, e);
    }

    public TargetSkill(SkillModel md)
    {
        GameUtil.FastAssignment(md, this);
    }
}